In the field of data processing, particularly the processing of three-dimensional images, digital processors are often called upon to process a large data set. Important applications of this type include medical imaging applications, such as certain ultrasound and magnetic resonance imaging (MRI) processes, certain imaging applications used in the oil and gas industry and non-destructive materials testing, and other applications as well. In these applications, it is often desirable to provide a quickly updated view (e.g., at least a few frames per second) that may be manipulated to provide any desired angle, both inside and outside a structure being viewed. For example, in the medical industry, it may be desired to first obtain volumetric data of an internal organ and then manipulate the view of that organ (both inside and outside the organ) to observe and diagnose its condition.
In many typical imaging applications, the digital processor is part of a high-end graphics computer or special purpose machine, and there may be one or more digital processors that cooperate to provide variable image outputs; in many applications, a frame-rate of at least ten frames per second is desired, and sometimes, a rate of thirty or more frames per second is desired. To create each frame, the one or more digital processors typically first accept a viewpoint (or perspective) desired by a user and then manipulate a three-dimensional data set to reflect the proper perspective and distance with respect to the viewpoint; the digital processor or processors then may process the data to derive a frame representing the proper two-dimensional view, e.g., accounting for the fact that given the perspective of the data, some relatively close opaque data may hide other data. While there are a variety of different processes that may be used to perform this “rendering,” most of these processes call for “rays” to be taken through the three-dimensional data set from the user's viewpoint, each ray representing one pixel in an output image frame; during this process, data points in the three-dimensional space are taken along each particular ray and either processed to contribute to the color and intensity seen at that pixel by the user, or discarded as hidden. Special effects such as reflection from multiple light sources, texture, and other processes may also be performed in connection with raycasting.
Unfortunately, it is often difficult to perform processing of large or complicated data sets on a wide range of computer equipment, especially on conventional workstations and laptops. This difficulty may be tied to how processing is conventionally employed by many of these machines. Typically, a data set and parameters needed to process that data set might be stored in the main memory of the computer (such as in RAM, on hard disk or on CDROM) and extensive time is needed to continually fetch typically small portions of data and parameters, to process them and return them to memory once processed. Most digital processors will have an on chip “cache,” that is, memory space that is in the processor and that is used when fast access to data is needed, but unfortunately, cache space is limited and is generally managed in a manner that results in frequent replacement of needed data. When a subsequent “cache miss” occurs as the processor again looks for the needed data or parameters, an undesired time delay may be consumed in attempting to again retrieve the these data and parameters from main memory.
Typical cache management protocols are therefore not well suited to processing of large or complicated data sets and fast processing of data from those sets by a processor. As a result, non-specialized machines (e.g., conventional workstations, laptops and other machines) typically cannot efficiently process large or complicated data, such as volumetric or other image data, and even enhanced machines may have their processing resources strained.
What is needed is a system that can process data to provide for more efficient processing of that data. Ideally, such a system would enable processing and output of data in real time. In the case of volumetric data or other three-dimensional image data, for example, such a system would ideally provide for real time output of at least ten frames per second. Further still, such a system ideally would enable common machines such as conventional laptops and workstations (e.g., those having conventional “Pentium” or other brands of microprocessors) to process volumetric data in real time. Finally, such a system would preferably have application to any form of data set, e.g., two-dimensional data, such that it could improve many forms of data processing such as used in games and other applications. The present invention satisfies these needs and provides further, related advantages.